在kotlin中提供一個private constructor的功能,但你會問說,如果constructor無法使用,那怎麼宣告? 當然這是有特殊用途的,譬如你有一個class,希望他透過指定的Builder或者特殊的static member來進行產生的時候
class ViewManager private constructor(engine: Engine) { 
    // do something
}
於是乎就會加上
class ViewManager private constructor(engine: Engine) { 
    // do something
    
    fun hello(){ ... }
    
    companion object {
        private lateinit var instance: ViewManager
        fun create(engine: Engine,data: Int): ViewManager {
            if(!::instance.isInitialized) {
                // if data ....
                instance = ViewManager(engine)
            }
            return instance
        }
    }
}
變成強制必須這樣呼叫
ViewManager.create(engine).hello()
大概會是這樣使用,在這邊主要就是希望透過create來取得與建立同一個實例,外部無法有任何其他方法自己另外建立實例,當然如果你是沒有參數的物件,可以直接透過object來做到一樣的事情。